#version 1; November 2025
#Assumes laser has been connected with it.connect(x,9600)
#assumes laser has been calibrated for cleanjump and calibration values are loaded in unit
#Run with: it.script("examples\\PerformCleanJumps.txt")
#---- Settings
FREQUENCY=194.56 #THz
POWER=13.2 #dBm
TARGETCHANNEL1=4
TARGETCHANNEL2=7
#-----

import time

it.resena(mr=1)  #reset the unit
time.sleep(3)    #wait a couple of seconds
it.fcf1(int(FREQUENCY))
it.fcf2(10000*(FREQUENCY-int(FREQUENCY)))

it.pwr(int(POWER*100))

it.resena(sena=1) #enable laser

reftime=time.perf_counter()
while it.nop()[1].data()&0xff00 and time.perf_counter()-reftime<60:  #wait until pending flags drop, with timeout
    time.sleep(1)

print("Laser ON after %.1f seconds" %(time.perf_counter()-reftime))

time.sleep(5) #wait 5 more seconds to ensure stability

it.cleanMode(2)  #start whispmode

time.sleep(5)

it.cleanJumpEnable(0)
writepacket=it.toModulePacket()
writepacket.register(0xD0) #needed for verson 3.2.11 not for later versons

writepacket.data(0x4000+TARGETCHANNEL1)
it.packet(writepacket) #needed for verson 3.2.11 not for later versons    it.cleanJumpEnable(0x4000+TARGETCHANNEL1) #set the next cleanjump
writepacket.data(1)
it.packet(writepacket) #needed for verson 3.2.11 not for later versons    it.cleanJumpEnable(1) #set the next cleanjump


time.sleep(5)

writepacket.data(0x4000+TARGETCHANNEL2)
it.packet(writepacket) #needed for verson 3.2.11 not for later versons    it.cleanJumpEnable(0x4000+TARGETCHANNEL1) #set the next cleanjump
writepacket.data(1)
it.packet(writepacket) #needed for verson 3.2.11 not for later versons    it.cleanJumpEnable(1) #set the next cleanjump



print("Performed 2 Clean Jumps; to calibrated channel %d and channel %d" %(TARGETCHANNEL1,TARGETCHANNEL2))